/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import modelo.Amigo;
import modelo.Lider;
import modelo.Seccion;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Elias Mendoza
 */
public class GenericDao extends OperacionesDao {

  public void CompruebaConexion() {
    try {
      iniciarOperacion();
      conectado();
    } finally {
//      sesion.close();
    }
  }

  public boolean insertarRegistro(Object obj) {
    boolean estado = true;
    try {
      iniciarOperacion();
      guardar(obj);
    } finally {
//      sesion.close();
    }

    return estado;
  }
  

  public Seccion[] consultaSecciones() {
    List query = null;
    try {
      iniciarOperacion();
      query = sesion.createQuery("From Seccion order by numero").list();
  
    } finally {
      sesion.close();
    }
    return (Seccion[]) query.toArray(new Seccion[query.size()]);
  }

    public Lider[] consultaLideres() {
    List query = null;
    try {
      iniciarOperacion();
      query = sesion.createQuery("From Lider order by nombre").list();
  
    } finally {
      sesion.close();
    }
    return (Lider[]) query.toArray(new Lider[query.size()]);
  }
    public Amigo[] consultaAmigos(int numero){
      List query = null;
      try{
        iniciarOperacion();
        
        Criteria criteria = sesion.createCriteria(Amigo.class)
                .createCriteria("seccion").createCriteria("primaryKey").createCriteria("seccionFK").add(Restrictions.eq("id", 701));
        criteria.addOrder(Order.asc("nombre"));
        query = criteria.list();
        
        System.out.println(query.size());
        for(Object obj : query){
          Amigo amigo = (Amigo) obj;
          System.out.println(amigo.getNombre());
        }
        
        
      }finally{
        sesion.close();
      }
      return (Amigo[]) query.toArray(new Amigo[query.size()]);
    }
    
     public Lider loadLider(int id){
    Lider lider =null;
    try{
      iniciarOperacion();
      lider = (Lider) sesion.load(Lider.class, id);
      
      sesion.getTransaction().commit();
    }finally{
      sesion.close();
    }
    return lider;
  }
    
   
}
